Documents are used to contain information. When a document is stored on a computer system, a document may correspond to one or more files or a part of a file. Documents may contain text, such as might be used as input to a word processing application program, but documents may contain other types of information. For example, a document may contain the source code for a web page. As used herein, a document is any collection of information stored in at least a part of one or more files.
Documents are sometimes edited using an authoring tool. For example, a document containing source code for a web page may be edited using a conventional web authoring tool, such as the conventional Dreamweaver 4 web authoring tool commercially available from Macromedia Corporation of San Francisco, Calif. Conventional web authoring tools simplify the process of document editing by allowing an author to specify the appearance of a web page and then translating the author's graphical specification into source code for a web page. In contrast to an authoring tool for a web page, an authoring tool for a word processing document may be used to edit a word processing document. Such a word processing authoring tool may include the conventional WORD FOR WINDOWS product commercially available from MICROSOFT CORPORATION of Redmond, Wash. Word processing authoring tools also simplify the process of document editing by providing a menu-based interface to documents to allow formatting to be easily specified.
Using each type of authoring tool, the author can request a change in the document and see the effect of the requested change on a graphical representation of the document. The author can thus use the authoring tool to incorporate complex instructions into the document without knowledge of their implementation details. Although the details of implementation must be used, for example, to cause a web page corresponding to a web page document to appear on a user's browser, because the authoring tool handles them, the author is not required to deal with them. For example, an author can draw a web page and rely on the web authoring tool to generate the HTML instructions corresponding to the web page: the author does not require even the faintest knowledge of the source code required to produce the web page he desires.
Some changes made to a document are particularly complex to incorporate into a document, or may not be easy to manipulate visually, even with the help of an authoring tool. For example, the source code for a web page may include server side code to be executed on a server before the web page is served to a user of the page. Conventional web authoring tools do not hide the implementation details of such changes: the author is required to know how to program the server side code to make even minor modifications to a web page containing server side code. Because even minor syntax errors can cause major problems to the server side code, experts in the programming language have been required to implement even minor changes to server side code using a web authoring tool.
Another example of changes made to a document requiring the services of an expert are legal documents. Even simple errors in a legal document can cause enormous problems. As a result, the services of an expert, such as an attorney, are frequently required to generate or alter legal documents.
There are several problems with the use of experts to generate or alter documents. Experts are often in short supply, making their services expensive to obtain and sometimes hard to obtain on short notice. Because of the expense, some changes are not made to documents because the change isn't worth the large cost, even though the change could be beneficial. Because the services may not be readily available, changes may be impossible to achieve as frequently as they are desired.
Libraries of pre-written portions of documents may be used to allow a non-expert to have access to the products of an expert by copying expert-written portions of the library into the document. However, merely copying parts of libraries can limit the use of the library to circumstances anticipated by the expert. Because as described above, a non-expert author may introduce problems into the document if the author attempts even minimal customization to match the circumstances at hand, libraries of pre-written portions of documents have limited usefulness.
The complexity of some changes is frequently exacerbated by different requirements under'differing conditions. For example, a change implemented in one manner using one server side code language may require an entirely different approach if another server side code language is required. Similarly, a change to a legal document implemented under one state's rules may not apply in another state. Some experts may only be familiar with only a subset of the full range of knowledge, and this further specialty makes the services of the proper expert more difficult and more expensive to obtain.
Custom programmed solutions to the problems above could have solved some of the problems with libraries, but they would lack two benefits of libraries: it is easy for the expert to see what the change will look like and the expert can use a wide variety of commonly available authoring tools to produce the library, even if the expert does not have access to the authoring tool with which the library will be used.
What is needed is a system and method that can allow an author with limited or no knowledge of the details of implementation of additions, changes or deletions to implement such additions, changes or deletions, to a document and optionally customize any additions or changes without requiring the services of an expert, that uses instructions for which the operations performed by any addition, change or deletion are readily apparent and easy to modify using a variety of tools.